package com.peaksport.framework.vo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import lombok.Getter;
import lombok.Setter;

/**
 * 全匹克接口统一返回值JSON格式,此格式兼容庄培恳dotNET接口返回格式
 * 
 * 扩展：
 * 	1. reusltCode=98 已知的开发错误
 *  2. resultCode=2 部分成功
 *  3. detailExpMsg 记录详细的异常错误堆栈
 *  
 * JSON格式:
 * 	jsonResultSet: {
 * 		resultCode: 结果编码
 * 		resultMsg: 错误/异常消息
 * 		detailExpMsg: 异常堆栈信息
 * 		resultData:[data]: 接口返回实际数据
 * 	} 
 * @author jinbin_guo
 *
 */

@SuppressWarnings("serial")
@Getter
@Setter
public class JSONResultSet implements Serializable {
	/**
	 * 返回结果编码
	 * 1: 成功,默认成功
	 * 2: 部分成功
	 * 98: 已知开发错误: 接口调用错误提示(调用xxx接口,某参数必须传值...)
	 * 99: 已知业务错误：合法性校验，逻辑判断等已知的错误或提示(如:xxx格式正确、xxx不能为空...)
	 * 100: 未知错误: 系统异常等
	 */
	private int resultCode = 1;
	
	/** 已知或未知错误消息,在98或99时必须有值，其他情况为空  */
	private String resultMsg;
	
	/**
	 * 已知或未知错误的堆栈信息,在98或99时必须有值，其他情况为空
	 */
	private String detailExpMsg;
	
	/**
	 *  返回数据列表
	 */
	private List<Object> resultData = new ArrayList<>();

	
	public static JSONResultSet create() {
		return new JSONResultSet();
	}
	
	public void addResultData(Object obj) {
		resultData.add(obj);
	}
}
